#include"barray_list.h"

int barray_list_init(barray_list* the_barray_list, int the_size){
  int rv = 0;
  the_barray_list->al = (array_list*)malloc(sizeof(array_list));
  rv = array_list_init(the_barray_list->al, the_size);

  the_barray_list->lock = (pthread_mutex_t*)malloc(sizeof(pthread_mutex_t));
  pthread_mutex_init(the_barray_list->lock, NULL);

  return rv;
}
void* barray_list_remove(barray_list* the_barray_list, int the_index){
  void* item;
  pthread_mutex_lock(the_barray_list->lock);
  item = array_list_remove(the_barray_list->al, the_index);
  pthread_mutex_unlock(the_barray_list->lock);
  return item;
}
void* barray_list_get(barray_list* the_barray_list, int the_index){
  void* item;
  pthread_mutex_lock(the_barray_list->lock);
  item = array_list_get(the_barray_list->al, the_index);
  pthread_mutex_unlock(the_barray_list->lock);
  return item;
}

int barray_list_add(barray_list* the_barray_list, void* the_item){
  int rv = 0;
  pthread_mutex_lock(the_barray_list->lock);
  rv = array_list_add(the_barray_list->al, the_item);
  pthread_mutex_unlock(the_barray_list->lock);
  return rv;
}
void barray_list_destroy(barray_list* the_barray_list){
  pthread_mutex_lock(the_barray_list->lock);
  array_list_destroy(the_barray_list->al);
  pthread_mutex_unlock(the_barray_list->lock);
}
